"Python中的模块是什么？"

#模块是指包含Python语句和定义的文件。
#包含Python代码的文件，例如：example.py，称为模块，其模块名称为example。
#我们使用模块将大型程序分解为可管理的小型文件。此外，模块提供了代码的可重用性。
#我们可以在模块中定义最常用的函数并将其导入，而不是将其定义复制到其他程序中。
#让我们创建一个模块。输入以下内容并将其另存为example.py。

"如何在Python中导入模块？"

#我们可以将模块内部的定义导入另一个模块或Python中的交互式解释器。
#我们使用import关键字来做到这一点。要导入我们先前定义的模块，example我们在Python提示符下键入以下内容。

import example

#这不会example直接在当前符号表中输入定义的功能名称。它仅在example此处输入模块名称。
#使用模块名称，我们可以使用点. 运算符访问函数。例如：

print(example.add(4,5.5))

#Python有大量可用的标准模块。
#您可以查看Python标准模块的完整列表及其用途。这些文件位于Python安装位置内的Lib目录中。
#可以像导入用户定义的模块一样导入标准模块。
#有多种导入模块的方法。它们列出如下。

"Python导入语句"

import math
print("π的值", math.pi)

"重命名导入"

import math as m
print("π的值", m.pi)

#我们已将math模块重命名为m。在某些情况下，这可以节省我们的书写时间。
#请注意，该名称math在我们的范围内无法识别。因此，math.pi无效的，而m.pi是正确的使用方式。

"Python from ... import语句"

"从数学模块仅导入pi"
from math import pi, e
print("π的值", pi)

#我们仅从模块导入属性pi。
#在这种情况下，我们不使用点运算符。我们可以如下导入多个属性。

print(pi)
print(e)

"导入所有名称"

# 从标准模块math中导入所有名称

from math import *
print("pi的值", pi)

"Python模块搜索路径"
#导入模块时，Python会在多个位置进行检查。解释器首先寻找一个内置模块，然后（如果找不到）进入定义的目录列表sys.path。搜索按此顺序进行。

#当前目录。
#PYTHONPATH （带有目录列表的环境变量）。
#与安装有关的默认目录。

import sys
print(sys.path)

"重新加载模块"
#Python解释器在会话期间仅导入一次模块。这使事情更有效率。这是一个示例，说明其工作原理。

"dir()内置函数"

#我们可以使用dir()函数找出在模块内部定义的名称。
#例如，我们在开始的模块example中定义了一个add()函数。

print(dir(example))
#在这里，我们可以看到一个已排序的名称列表(以及add)。以下划线开头的所有其他名称都是与模块关联的默认Python属性(我们自己没有定义它们)。

#可以使用不带任何参数的dir()函数找出当前名称空间中定义的所有名称。
a = 1
b = "hello"
import math
print(dir())
